import { constructProxy } from "./proxy.js"; // 引入代理方法
import { mount } from "./mount.js"; // 挂载方法
let uid = 0; // 给每个Due对象一个唯一编号
export function initMixin(Due) {
  // 混入一个初始化方法，给Due的原型上添加init方法
  Due.prototype._init = function (options) {
    const vm = this;
    vm.uid = uid++;
    vm.isDue = true;
    // 初始化data
    if (options && options.data) {
      vm._data = constructProxy(vm, options.data, ""); // vm的_data属性为vm的代理对象
    }
    // 初始化created方法
    if (options && options.created) {
      // debugger
      vm._created = options.created;
    }
    // 初始化methods
    if (options && options.methods) {
      vm._methods = options.methods;
      for (let temp in options.methods) {
        vm[temp] = options.methods[temp];
      }
    }
    // 初始化computed
    if (options && options.computed) {
      vm._computed = options.computed;
    }
    // 初始化el并挂载
    if (options && options.el) {
      let rootDom = document.getElementById(options.el);
      mount(vm, rootDom);
    }
  };
}
